package cn.com.surker.lab.dao;

import cn.com.surker.lab.entity.LabLevelOptimizeMaterial;
import cn.com.surker.lab.vo.OptimizeMaterialVo;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 强度等级优化材料消耗详细表 Mapper 接口
 * </p>
 *
 * @author admin
 * @since 2024-09-23
 */
public interface LabLevelOptimizeMaterialDao extends BaseMapper<LabLevelOptimizeMaterial> {

    /**
     * 计算配合比子项总量
     * @param levelOptimizeId
     * @return
     */
    Double totalSumUsed(Long levelOptimizeId);

    /**
     * 批量新增
     * @param list
     * @return
     */
    Integer saveBatch(List<LabLevelOptimizeMaterial> list);

    List<OptimizeMaterialVo> findByOptimizeStrength(@Param(Constants.WRAPPER) Wrapper<LabLevelOptimizeMaterial> queryWrapper);

    /**
     * 根据强度等级查询标准配合比用量及工控仓位信息
     * @param lineId
     * @param strengthId
     * @return
     */
    List<OptimizeMaterialVo> findStrengthIdOrControl(Long lineId, Long strengthId);
    /**
     * 根据强度等级查询标准配合比用量及工控仓位信息(根据施工配比强度)
     * @param lineId
     * @param strengthId
     * @return
     */
    List<OptimizeMaterialVo> findStrengthIdOrControlV1(Long lineId, Long strengthId);

    /**
     * 根据材料或强度等级查询标准配比用量
     * @param strengthId
     * @param materialId
     * @return
     */
    OptimizeMaterialVo findByStrengthOrMaterial(Long strengthId, Long materialId);

    /**
     * 根据材料或强度等级查询标准配比用量(按生产配比强度)
     * @param strengthId
     * @param materialId
     * @return
     */
    OptimizeMaterialVo findByStrengthOrMaterialV1(Long strengthId, Long materialId);
}
